home *** CD-ROM | disk | FTP | other *** search
/ The X-Philes (2nd Revision) / The X-Philes Number 1 (1995).iso / xphiles / hp48_1 / alg_jl < prev    next >
Internet Message Format  |  1995-03-31  |  4KB

  1. From: John Latala <jrl@images1.waterloo.NCR.COM>
  2. Subject:  v05i021:  alg_jl - Algebraic/prefix/rpn conversions v1.0, Part01/01
  3. Newsgroups: comp.sources.hp48
  4. Organization: Imaging Systems Division, NCR Corporation, Waterloo, Ont., CANADA
  5. Followup-To: comp.sys.hp48
  6. Approved: spell@seq.uncwil.edu
  7.  
  8. Checksum:  447259064 (verify with brik -cv)
  9. Submitted-by: john Latala <jrl@images1.waterloo.NCR.COM>
  10. Posting-number: Volume 5, Issue 21
  11. Archive-name: alg_jl/part01
  12.  
  13.  
  14. BEGIN_DOC alg.doc
  15. Below is a directory of routines for converting between algebraic
  16. expressions, PREFIX lists or RPN lists.
  17.  
  18. A PREFIX list is similar to a parse tree. Shown below are all three
  19. forms for the same expression:
  20.  
  21.     Name        Type    Example
  22.     ----        ----    -------
  23.     algebraic    A    'A*(B+C)'
  24.     prefix list    P    { * A { + B C } }
  25.     rpn list    R    { A B C + * }
  26.  
  27. The directory has routines for going from any source A/P/R to any
  28. different destination A/P/R
  29.  
  30. The algebraic expressions shouldn't use the variable names 'n', 'op',
  31. 'i' or 'l' because they are variables local to some of the routines.
  32. END_DOC
  33.  
  34. BEGIN_RPL alg.rpl
  35. %%HP: T(3)A(D)F(.);
  36. DIR
  37.   A\->P
  38.     \<< 
  39.       OBJ\-> SWAP 
  40.       \-> n
  41.       \<< 
  42.         n 1 + ROLLD
  43.         1 n
  44.         START n
  45.           ROLL
  46.           IF DUP TYPE 9 == THEN
  47.             IF DUP SIZE 1 \=/ THEN
  48.               A\->P
  49.             END
  50.           END
  51.         NEXT 
  52.         n 1 + \->LIST
  53.       \>>
  54.     \>>
  55.   A\->R
  56.     \<< 
  57.       A\->P P\->R
  58.     \>>
  59.   P\->A
  60.     \<<
  61.       IF DUP TYPE 5 == THEN 
  62.         OBJ\-> 1 -
  63.         \-> n
  64.         \<< 
  65.           1 n
  66.           START n
  67.             ROLL P\->A
  68.           NEXT 
  69.           n 1 + ROLL EVAL
  70.         \>>
  71.       END
  72.     \>>
  73.   P\->R
  74.     \<<
  75.       IF DUP TYPE 5 == THEN 
  76.         OBJ\-> 1 - DUP 2 + ROLL 
  77.         \-> n op
  78.         \<< 
  79.           { } 
  80.           n 1
  81.           FOR i 
  82.             i 1 + ROLL P\->R + -1
  83.           STEP 
  84.           op +
  85.         \>>
  86.       ELSE 
  87.         1 \->LIST
  88.       END
  89.     \>>
  90.   R\->A
  91.     \<< 
  92.       \-> l
  93.       \<< 
  94.         1 l SIZE
  95.         FOR i 
  96.           'l' i GET EVAL
  97.         NEXT
  98.       \>>
  99.     \>>
  100.   R\->P
  101.     \<< 
  102.       R\->A A\->P
  103.     \>>
  104. END
  105. END_RPL
  106.  
  107.  
  108. BEGIN_ASC alg.asc
  109. %%HP: ;
  110. "69A20FF7BE200000003025D80530D9D20E163284E203025D81484E203014D805
  111. 93632B2130830003025D81430D9D20E16321C432D6E2010C6E16329C2A2D6E20
  112. 10C68B9C10A132D6E20109645632D6E2010C697632D6E2010966C7D1EB3A1C42
  113. 32EF53293632B2130280003005D82530D9D20E16323CE2278BF168BC1D13A227
  114. 9E1AFE22D9D20B7FC19C2A290DA178BF1ED2A276BA15BCF11C432D6E2010E6D6
  115. E2020F607E163247A20B2130D6E2010E69C2A20A132D6E201096D6E2010969C2
  116. A276BA15BCF184E203005D82576BA1683A208332D6E2020F60776BA1EF532B21
  117. 305BF22D9D209C2A2387C1B21305DF2293632B2130411003005D81430D9D20E1
  118. 6323CE2278BF168BC1D13A2279E1AFE22D9D20B7FC19C2A290DA11C432D6E201
  119. 0E6E16329C2A2D6E2010E630132D6E2010E65BCF184E203005D814C4232D6E20
  120. 10E69C2A276BA15BCF1EB3A1EF532B21305DF2293632B21302C0003014D82530
  121. D9D20E163284E203014D80584E203005D82593632B2130830003014D80530D9D
  122. 20E1632B7FC1DBBF11C432D6E2010E6E1632D6E2010E69C2A276BA10DCF19C2A
  123. 2D6E2010E630132D6E2010E65BCF13CE2278BF168BC1173A2279E1AFE22D9D20
  124. 3CE2278BF18B9C19C2A2D9AE1AFE2284E203014D8055DF22B21305DF22C4232D
  125. 6E2010E69C2A276BA1387C1EF53293632B2130008A"
  126. END_ASC
  127.  
  128.  
  129. BYTES: #A800h 506.5
  130.  
  131. BEGIN_UU alg.uue
  132. begin 644 alg
  133. M2%!(4#0X+466*O!_ZP(````#4HU0`YTMX&$C2"XP(-48A.0"`T&-4#DVLA(#
  134. M.``P(-48--#9`AXV$DPC;2X0P.9A(\FBTN8"`6RXR0$:(VTN$)!&92-M+A#`
  135. MEF<C;2X0D&9\';ZCP20C_C628R,K,2`(``-0C5(#G2W@82/#+G*X'X;+T3$J
  136. M<NFA[R*=+;#W',FBDM`:A_OA+2IGJU'+'\$TTN8"`6YM+B#P!N=A(W0JL!(#
  137. M;2X0X)8L*J`QTN8"`6EM+A"0EBPJ9ZM1RQ](+C``U2AUMAJ&HP(X(VTN(/`&
  138. M=[8:_C6R$@.U+]+9`LFB,G@<*S%0_2(Y-K(2`Q0!,`#5V0(>-C+L(H?[
  139. M8;@<':,BEQ[Z+M+9`GO/D2PJ":T13"-M+A#@YF$CR:+2Y@(!;@,QTN8"`6ZU
  140. M_('D`@-0C4%,,M+F`@%NR:)RMAJU_.$[&OXULA(#U2^28R,K,2`,``-!C5(#
  141. MG2W@82-(+C`0U`B%Y`(#4(U2.3:R$@,X`#`0U`@UT-D"'C:R]QR]^Q%,(VTN
  142. M$.#F82-M+A#@EBPJ9ZL!S1_)HM+F`@%N`S'2Y@(!;K7\,>PBA_MAN!QQHR*7
  143. M'OHNTMD"PRYRN!^XR9$L*IWJH>\B2"XP$-0(5?TB*S%0_2),,M+F`@%NR:)R
  144. ,MAJ#Q^%?(SDVLA(#
  145. `
  146. end
  147. sum -r/size 52635/720 section (from "begin" to "end")
  148. sum -r/size 9883/507 entire input file
  149. END_UU
  150. --
  151. john.Latala@Waterloo.NCR.COM
  152. SYSTEM-E-ARMAGEDDON, WORLD quanta expired. System being shutdown.
  153. SYSTEM-I-ARMAGEDDON, Have a nice day.
  154.